ATA and Serial ATA (SATA) interfaces are well known for use with disk drives and similar mass storage devices. This wide knowledge makes these interfaces popular among system designers and those who approve system designs for reliability and quality. The identifiable name or acronym provides a basic level of comfort to everyone involved, along with the requirements that related standards impose on devices which are said to be ATA or SATA compatible.
In many embedded systems, a hard drive would be overkill in some ways and budget-busting in other ways. Additionally, the hard drive might not be reliable under the conditions in which the embedded system may operate. Excess vibration, for example, may ruin a hard drive in short order. Similarly, while a 100 MB hard drive was a large storage volume in the early 1990s, it is a small storage volume today. Thus, embedding a hard drive as part of an embedded system may be unwise.
One may then attempt to provide an alternative to a hard drive in an embedded system. One may desire that the alternative provide reliability without all of the moving parts of a hard drive, for example. Likewise, one may desire that the alternative provide an interface which is very well understood and characterized. Thus, it may be useful to provide an embedded hard drive with a SATA interface and a reliable structure, but without significant moving parts.
Moreover, one may desire an expandable format. In some systems, the ability to add more storage capacity at a later date may be very valuable. Thus, it may be useful to provide a drive design that allows for expansion.
Conventional data storage devices and data storage systems have also traditionally used known RAID implementations for striping data between multiple drives for both increased performance and improved data protection through redundancy. These conventional methods typically use a striping arrangement in which data is striped between drives either one-bit or one-byte at a time. For rotating hard disc drives, this arrangement gives improved performance for both small and large packets of data. For other drive types performance may not be improved or efficient.
For example, the use of higher capacity solid state storage devices and drives is becoming more commonplace, particularly flash memory solid state drives that use a Universal Serial Bus (USB) interface. In particular, some such solid state drives may use an array of NAND flash memory based drives striped in parallel to improve performance. Using a traditional RAID implementation is not as efficient for such NAND flash based drives. For one thing, conventional off-the-shelf controllers do not currently support a write or read smaller than one sector of data (where a sector of data may be 512 Bytes). Therefore, if the host requests reading of a single sector of data and that data is striped across a plurality of drives such as across four drives, then 512 Byte must be read from each of the drives, thus increasing the total transfer time even though some of the transferred data is redundant and does not communicate useful information. Furthermore, if the host is writing a single sector, then 512 Bytes must be written to each of the plurality of drive even though not all of the data represents useful information. In this particular example where striping is across four drives, and where the drive is a flash memory device drive, only ¼ of the sector on each flash memory device is used for data storage and the rest is filled with invalid or at least non-useful data. This is not a very efficient use of available flash memory drive storage space. Furthermore, and perhaps more significantly, since NAND flash has a limited number of write cycles before it wears out, the extra write operations will cause more wear on the flash and a shorter useful life. These shorter lifetime may usually apply even where known wear leveling procedures or algorithms are used in the NAND flash memory.
Therefore, there remains a need for a data striping system, device, and method that overcomes these problems and limitations and provides speed, lifetime extension, and other operational benefits to storage devices and systems of all types generally, and to flash memory based storage devices and systems in particular.